package cn.com.bluemoon.daps.sync.vo.applypublish;

import cn.com.bluemoon.daps.sync.base.CompareResult;
import cn.com.bluemoon.daps.sync.base.SqlCompareResult;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * @author Jarod.Kong
 * @date 2021/7/2 17:06
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ModelCompareVo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("模型id")
    private String modelId;

    @ApiModelProperty("模型名")
    private String modelName;

    @ApiModelProperty("数据库名")
    private String dbName;

    /**
     * 可能为空，因为存在数据库中有而模型中没有的表
     * <p>
     * 表id 基于模型->dev/test的情况，模型表都会有表id
     * 基于dev/test->模型的情况，（模型无，库表有）没有表id，有表名；此时为删除库表信息，<important>但是目前业务路基
     * 是不允许进行删除库表的，所以表id还是不为空</important>
     */
    @ApiModelProperty("表id")
    private String tableId;

    /**
     * 表名 基于模型->dev/test的情况，模型表都会有表名
     * 基于dev/test->模型的情况，都有表名
     */
    @ApiModelProperty("表名")
    private String tableName;

    @ApiModelProperty("是否为表重建+删除/修改字段")
    private boolean rebuildTableAndDropField;

    @ApiModelProperty("表对比结果、表级、字段级、索引级、分区级")
    private List<CompareResult<SqlCompareResult>> tableCompares, fieldCompares, indexCompares, partitionCompares;
}